/***********************************************************************************
* Filename:				CAbstractState.h    
* Date Created:         04/29/2011                        
* Mod. Date:            04/29/2011                        
* Mod. Initials:		JW
* Author:				John Wileczek
* Purpose:				Define CAbstractState class
*						This class will be the interface that all states must follow.
*						NOTE: This is a pure virtual class no objects of this class can be created. 
************************************************************************************/
#ifndef CABSTRACTSTATE_H_
#define CABSTRACTSTATE_H_

class CAbstractState
{
public:
/*********************************************************************************
 * Intialize():		This function will initialize all the states data.  
 * 			      			      			      
 * Ins:				void			      
 *      		     
 * Outs:		    void  
 *
 * Returns:		    void  
 *
 * Mod. Date:		04/29/2011      
 * Mod. Initials:	JW      
 ********************************************************************************/
virtual void Initialize() = 0;

/*********************************************************************************
 * Update():		This function will update the state. 
 * 			      			      			      
 * Ins:				fDT (delta time)			      
 *      		     
 * Outs:		    void  
 *
 * Returns:		    void  
 *
 * Mod. Date:		04/29/2011      
 * Mod. Initials:	JW      
 ********************************************************************************/
virtual void Update(float fDT) = 0;

/*********************************************************************************
 * Shutdown():		This function will shutdown the state and clean up memory.  
 * 			      			      			      
 * Ins:				void			      
 *      		     
 * Outs:		    void  
 *
 * Returns:		    void  
 *
 * Mod. Date:		04/29/2011      
 * Mod. Initials:	JW      
 ********************************************************************************/
virtual void Shutdown() = 0;

/*********************************************************************************
 * Input():		This function will catch input for the state 
 * 			      			      			      
 * Ins:				void			      
 *      		     
 * Outs:		    void  
 *
 * Returns:		    void  
 *
 * Mod. Date:		04/29/2011      
 * Mod. Initials:	JW      
 ********************************************************************************/
virtual void Input() = 0;

/*********************************************************************************
 * Render():		This function will render the state and  objects in it.
 * 			      			      			      
 * Ins:				void			      
 *      		     
 * Outs:		    void  
 *
 * Returns:		    void  
 *
 * Mod. Date:		04/29/2011      
 * Mod. Initials:	JW      
 ********************************************************************************/
virtual void Render() = 0;


};

#endif